#ifndef PROTOCOL_HPP
#define PROTOCOL_HPP
#include <stdint.h>
#include <stdbool.h>
#include "firmwaredownload.hpp"
///> 底层协议类接口定义
using namespace ota;

namespace  protocols
{
	class protocol
	{
		protected:
			firmwaredownload *mFirmwaredownload;
		public:
			
			/** 
			* @brief      	构造函数
			* @retval     	None
			*/
			protocol();
			
			/** 
			* @brief      	析构函数
			* @retval     	None
			*/
			virtual ~protocol();
		
			/** 
			* @brief      	拆包
			* @param[in]  	ucData   		数据
			* @param[out]  	usDataLen   数据长度
			* @retval     	None
			*/
			virtual bool Unpack(uint8_t *ucData, uint16_t usDataLen);
		
			/** 
			* @brief      	封包
			* @param[in]  	ucData   		数据
			* @retval     	数据长度
			*/
			virtual uint16_t Pack(uint8_t *ucData);
			
			/** 
			* @brief      	注册OTA升级对象
			* @param[in]  	tfirmwaredownload   		OTA升级对象
			* @retval     	None
			*/
			virtual void RegisteOtaInterface(firmwaredownload *tfirmwaredownload);
	};	
}

#endif
